home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / misc / dspice0s / errchk.c < prev    next >
C/C++ Source or Header  |  1992-11-21  |  56KB  |  1,810 lines

  1. /* errchk.f -- translated by f2c (version of 3 February 1990  3:36:42).
  2.    You must link the resulting object file with the libraries:
  3.     -lF77 -lI77 -lm -lc   (in that order)
  4. */
  5.  
  6. #include "f2c.h"
  7.  
  8. /* Common Block Declarations */
  9.  
  10. struct {
  11.     integer ielmnt, isbckt, nsbckt, iunsat, nunsat, itemps, numtem, isens, 
  12.         nsens, ifour, nfour, ifield, icode, idelim, icolum, insize, 
  13.         junode, lsbkpt, numbkp, iorder, jmnode, iur, iuc, ilc, ilr, 
  14.         numoff, isr, nmoffc, iseq, iseq1, neqn, nodevs, ndiag, iswap, 
  15.         iequa, macins, lvnim1, lx0, lvn, lynl, lyu, lyl, lx1, lx2, lx3, 
  16.         lx4, lx5, lx6, lx7, ld0, ld1, ltd, imynl, imvn, lcvn, nsnod, 
  17.         nsmat, nsval, icnod, icmat, icval, loutpt, lpol, lzer, irswpf, 
  18.         irswpr, icswpf, icswpr, irpt, jcpt, irowno, jcolno, nttbr, nttar, 
  19.         lvntmp;
  20. } tabinf_;
  21.  
  22. #define tabinf_1 tabinf_
  23.  
  24. struct {
  25.     doublereal atime, aprog[3], adate, atitle[10], defl, defw, defad, defas, 
  26.         rstats[50];
  27.     integer iwidth, lwidth, nopage;
  28. } miscel_;
  29.  
  30. #define miscel_1 miscel_
  31.  
  32. struct {
  33.     integer locate[50], jelcnt[50], nunods, ncnods, numnod, nstop, nut, nlt, 
  34.         nxtrm, ndist, ntlin, ibr, numvs, numalt, numcyc;
  35. } cirdat_;
  36.  
  37. #define cirdat_1 cirdat_
  38.  
  39. struct {
  40.     integer maxtim, itime, icost;
  41. } cje_;
  42.  
  43. #define cje_1 cje_
  44.  
  45. struct {
  46.     doublereal omega, time, delta, delold[7], ag[7], vt, xni, egfet, xmu, 
  47.         sfactr;
  48.     integer mode, modedc, icalc, initf, method, iord, maxord, noncon, iterno, 
  49.         itemno, nosolv, modac, ipiv, ivmflg, ipostp, iscrch, iofile;
  50. } status_;
  51.  
  52. #define status_1 status_
  53.  
  54. struct {
  55.     integer iprnta, iprntl, iprntm, iprntn, iprnto, limtim, limpts, lvlcod, 
  56.         lvltim, itl1, itl2, itl3, itl4, itl5, itl6, igoof, nogo, keof;
  57. } flags_;
  58.  
  59. #define flags_1 flags_
  60.  
  61. struct {
  62.     doublereal twopi, xlog2, xlog10, root2, rad, boltz, charge, ctok, gmin, 
  63.         reltol, abstol, vntol, trtol, chgtol, eps0, epssil, epsox, pivtol,
  64.          pivrel;
  65. } knstnt_;
  66.  
  67. #define knstnt_1 knstnt_
  68.  
  69. struct {
  70.     doublereal tcstar[2], tcstop[2], tcincr[2];
  71.     integer icvflg, itcelm[2], kssop, kinel, kidin, kovar, kidout;
  72. } dc_;
  73.  
  74. #define dc_1 dc_
  75.  
  76. struct {
  77.     doublereal fstart, fstop, fincr, skw2, refprl, spw2;
  78.     integer jacflg, idfreq, inoise, nosprt, nosout, nosin, idist, idprt;
  79. } ac_;
  80.  
  81. #define ac_1 ac_
  82.  
  83. struct {
  84.     doublereal tstep, tstop, tstart, delmax, tdmax, forfre;
  85.     integer jtrflg;
  86. } tran_;
  87.  
  88. #define tran_1 tran_
  89.  
  90. struct {
  91.     doublereal xincr, string[15], xstart, yvar[8];
  92.     integer itab[8], itype[8], ilogy[8], npoint, numout, kntr, numdgt;
  93. } outinf_;
  94.  
  95. #define outinf_1 outinf_
  96.  
  97. struct {
  98.     doublereal value[200000];
  99. } blank_;
  100.  
  101. #define blank_1 blank_
  102.  
  103. /* Table of constant values */
  104.  
  105. static integer c__1 = 1;
  106. static integer c__4 = 4;
  107. static integer c__2 = 2;
  108. static integer c__0 = 0;
  109.  
  110. /* spice version 2g.6  sccsid=errchk.ma 3/15/83 */
  111. /*<       subroutine errchk >*/
  112. /* Subroutine */ int errchk_()
  113. {
  114.     /* Initialized data */
  115.  
  116.     static struct {
  117.     char e_1[8];
  118.     doublereal e_2;
  119.     } equiv_62 = { {'d', 'c', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
  120.  
  121. #define alsdc (*(doublereal *)&equiv_62)
  122.  
  123.     static struct {
  124.     char e_1[8];
  125.     doublereal e_2;
  126.     } equiv_63 = { {'t', 'r', 'a', 'n', ' ', ' ', ' ', ' '}, 0. };
  127.  
  128. #define alstr (*(doublereal *)&equiv_63)
  129.  
  130.     static struct {
  131.     char e_1[8];
  132.     doublereal e_2;
  133.     } equiv_64 = { {'a', 'c', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
  134.  
  135. #define alsac (*(doublereal *)&equiv_64)
  136.  
  137.     static struct {
  138.     char e_1[16];
  139.     doublereal e_2;
  140.     } equiv_65 = { {'t', 'r', 'a', 'p', ' ', ' ', ' ', ' ', 'g', 'e', 'a',
  141.          'r', ' ', ' ', ' ', ' '}, 0. };
  142.  
  143. #define aname ((doublereal *)&equiv_65)
  144.  
  145.     static struct {
  146.     char e_1[32];
  147.     doublereal e_2;
  148.     } equiv_66 = { {'o', 'p', 't', 'i', 'o', 'n', ' ', 's', 'u', 'm', 'm',
  149.          'a', 'r', 'y', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 
  150.         ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
  151.  
  152. #define titlop ((doublereal *)&equiv_66)
  153.  
  154.     static struct {
  155.     char e_1[4];
  156.     integer e_2;
  157.     } equiv_67 = { {'.', 'u', ' ', ' '}, 0 };
  158.  
  159. #define ndefin (*(integer *)&equiv_67)
  160.  
  161.     static integer nnods[50] = { 2,2,2,0,2,2,2,2,2,2,2,4,3,4,0,0,4,0,1,0,0,0,
  162.         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,0,0 };
  163.     static struct {
  164.     char e_1[8];
  165.     doublereal e_2;
  166.     } equiv_68 = { {'e', 'l', 'e', 'm', 'e', 'n', 't', ' '}, 0. };
  167.  
  168. #define aelmt (*(doublereal *)&equiv_68)
  169.  
  170.     static struct {
  171.     char e_1[8];
  172.     doublereal e_2;
  173.     } equiv_69 = { {'m', 'o', 'd', 'e', 'l', ' ', ' ', ' '}, 0. };
  174.  
  175. #define amodel (*(doublereal *)&equiv_69)
  176.  
  177.     static struct {
  178.     char e_1[8];
  179.     doublereal e_2;
  180.     } equiv_70 = { {'o', 'u', 't', 'p', 'u', 't', ' ', ' '}, 0. };
  181.  
  182. #define aoutpt (*(doublereal *)&equiv_70)
  183.  
  184.  
  185.     /* Format strings */
  186.     static char fmt_41[] = "(\0020*error*:  \002,2a8,\002 has been reference\
  187. d but not defined\002/)";
  188.     static char fmt_321[] = "(\0020*error*:  circuit has no nodes\002/)";
  189.     static char fmt_661[] = "(\0020*error*:  element \002,a8,\002 piecewise \
  190. linear source table not increasing in time\002)";
  191.     static char fmt_1601[] = "(\0020dc analysis -\002,/,\0020    gmin   =\
  192.  \002,1pd10.3,/,\002     reltol = \002,d10.3,/,\002     abstol = \002,d10.3,\
  193. /,\002     vntol  = \002,d10.3,/,\002     lvlcod = \002,i6,/,\002     itl1  \
  194.  = \002,i6,/,\002     itl2   = \002,i6,/)";
  195.     static char fmt_1605[] = "(\002     pivtol = \002,1pd10.3,/,\002     piv\
  196. rel = \002,d10.3)";
  197.     static char fmt_1611[] = "(\0020transient analysis -\002,/,\0020    meth\
  198. od =  \002,a8,/,\002     maxord = \002,i6,/,\002     chgtol = \002,1pd10.3,/\
  199. ,\002     trtol  = \002,d10.3,/,\002     lvltim = \002,i6,/,\002     mu     \
  200. = \002,0pf10.3,/,\002     itl3   = \002,i6,/,\002     itl4   = \002,i6,/,\
  201. \002     itl5   = \002,i6,/)";
  202.     static char fmt_1621[] = "(\0020miscellaneous -\002,/,\0020    limpts =\
  203.  \002,i6,/,\002     limtim = \002,i6,/,\002     cptime = \002,i9,/,\002     \
  204. numdgt = \002,i6,/,\002     tnom   = \002,0pf10.3,/,\002     defl   = \002,1\
  205. pd10.3,/,\002     defw   = \002,d10.3,/,\002     defad  = \002,d10.3,/,\002 \
  206.     defas  = \002,d10.3)";
  207.     static char fmt_1701[] = "(\0020warning:  more than \002,i5,\002 points \
  208. for \002,a4,\002 analysis,\002,/1x,\002analysis omitted.  this limit may be \
  209. overridden using the \002,/1x,\002limpts parameter on the .option card\002/)";
  210.  
  211.     static char fmt_1711[] = "(\0020warning:  no \002,a4,\002 outputs specif\
  212. ied .\002,\002.. analysis omitted\002/)";
  213.     static char fmt_1736[] = "(\0020warning:  fourier analysis fundamental f\
  214. requency is incompatible with\002/11x,\002transient analysis print interval \
  215. ... fourier analysis omitted\002/)";
  216.  
  217.     /* System generated locals */
  218.     integer i_1, i_2;
  219.     doublereal d_1, d_2;
  220.  
  221.     /* Builtin functions */
  222.     integer s_wsfe(), do_fio(), e_wsfe();
  223.     double sqrt(), sin(), cos();
  224.  
  225.     /* Local variables */
  226.     static doublereal anam;
  227.     extern /* Subroutine */ int find_();
  228.     static integer node, ibkp, locp, locv;
  229.     static doublereal temp;
  230.     static integer iknt, nump, node1, node2, node3, node4;
  231.     extern /* Subroutine */ int getm4_(), getm8_(), copy4_();
  232.     static integer lptr1, lptr2;
  233.     extern /* Subroutine */ int zero8_();
  234.     static integer i, j, nbkpt;
  235.     static doublereal t1;
  236.     static integer jstop, jtype, ntemp;
  237.     extern /* Subroutine */ int title_();
  238.     static doublereal t2;
  239.     static integer id;
  240.     static doublereal td;
  241.     extern /* Subroutine */ int modchk_();
  242. #define nodplc ((integer *)&blank_1)
  243. #define cvalue ((complex *)&blank_1)
  244.     extern /* Subroutine */ int second_();
  245.     static integer loc;
  246.     extern /* Subroutine */ int putnod_();
  247.     static integer nssnod;
  248.     extern /* Subroutine */ int sizmem_(), getnod_();
  249.     static integer nic;
  250.     extern /* Subroutine */ int subckt_(), lnkref_(), subnam_(), clrmem_(), 
  251.         relmem_(), elprnt_(), topchk_();
  252.     static integer nl1, nl2;
  253.     static doublereal tol;
  254.     extern /* Subroutine */ int extmem_(), shlsrt_();
  255.     static doublereal forprd;
  256.     static integer ifwdth, noprln, noprex, locnew;
  257.  
  258.     /* Fortran I/O blocks */
  259.     static cilist io__18 = { 0, 0, 0, fmt_41, 0 };
  260.     static cilist io__25 = { 0, 0, 0, fmt_321, 0 };
  261.     static cilist io__35 = { 0, 0, 0, fmt_661, 0 };
  262.     static cilist io__45 = { 0, 0, 0, fmt_1601, 0 };
  263.     static cilist io__46 = { 0, 0, 0, fmt_1605, 0 };
  264.     static cilist io__47 = { 0, 0, 0, fmt_1611, 0 };
  265.     static cilist io__48 = { 0, 0, 0, fmt_1621, 0 };
  266.     static cilist io__49 = { 0, 0, 0, fmt_1701, 0 };
  267.     static cilist io__50 = { 0, 0, 0, fmt_1711, 0 };
  268.     static cilist io__51 = { 0, 0, 0, fmt_1701, 0 };
  269.     static cilist io__52 = { 0, 0, 0, fmt_1711, 0 };
  270.     static cilist io__54 = { 0, 0, 0, fmt_1736, 0 };
  271.     static cilist io__55 = { 0, 0, 0, fmt_1701, 0 };
  272.     static cilist io__56 = { 0, 0, 0, fmt_1711, 0 };
  273.  
  274.  
  275. /*<       implicit double precision (a-h,o-z) >*/
  276.  
  277.  
  278. /*     this routine drives the pre-processing and general error-checking 
  279. */
  280. /* of input performed by spice. */
  281.  
  282. /* spice version 2g.6  sccsid=tabinf 3/15/83 */
  283. /*<       common /tabinf/ ielmnt,isbckt,nsbckt,iunsat,nunsat,itemps,numtem, >*/
  284. /*<      1   isens,nsens,ifour,nfour,ifield,icode,idelim,icolum,insize, >*/
  285. /*<      2   junode,lsbkpt,numbkp,iorder,jmnode,iur,iuc,ilc,ilr,numoff,isr, >*/
  286. /*<      3   nmoffc,iseq,iseq1,neqn,nodevs,ndiag,iswap,iequa,macins,lvnim1, >*/
  287. /*<      4   lx0,lvn,lynl,lyu,lyl,lx1,lx2,lx3,lx4,lx5,lx6,lx7,ld0,ld1,ltd, >*/
  288. /*<      5   imynl,imvn,lcvn,nsnod,nsmat,nsval,icnod,icmat,icval, >*/
  289. /*<      6   loutpt,lpol,lzer,irswpf,irswpr,icswpf,icswpr,irpt,jcpt, >*/
  290. /*<      7   irowno,jcolno,nttbr,nttar,lvntmp >*/
  291. /* spice version 2g.6  sccsid=miscel 3/15/83 */
  292. /*<       common /miscel/ atime,aprog(3),adate,atitle(10),defl,defw,defad, >*/
  293. /*<      1  defas,rstats(50),iwidth,lwidth,nopage >*/
  294. /* spice version 2g.6  sccsid=cirdat 3/15/83 */
  295. /*<       common /cirdat/ locate(50),jelcnt(50),nunods,ncnods,numnod,nstop, >*/
  296. /*<      1   nut,nlt,nxtrm,ndist,ntlin,ibr,numvs,numalt,numcyc >*/
  297. /* spice version 2g.6  sccsid=cje 3/15/83 */
  298. /*<       common /cje/ maxtim,itime,icost >*/
  299. /* spice version 2g.6  sccsid=status 3/15/83 */
  300. /*<       common /status/ omega,time,delta,delold(7),ag(7),vt,xni,egfet, >*/
  301. /*<      1   xmu,sfactr,mode,modedc,icalc,initf,method,iord,maxord,noncon, >*/
  302. /*<      2   iterno,itemno,nosolv,modac,ipiv,ivmflg,ipostp,iscrch,iofile >*/
  303. /* spice version 2g.6  sccsid=flags 3/15/83 */
  304. /*<       common /flags/ iprnta,iprntl,iprntm,iprntn,iprnto,limtim,limpts, >*/
  305. /*<      1   lvlcod,lvltim,itl1,itl2,itl3,itl4,itl5,itl6,igoof,nogo,keof >*/
  306. /* spice version 2g.6  sccsid=knstnt 3/15/83 */
  307. /*<       common /knstnt/ twopi,xlog2,xlog10,root2,rad,boltz,charge,ctok, >*/
  308. /*<      1   gmin,reltol,abstol,vntol,trtol,chgtol,eps0,epssil,epsox, >*/
  309. /*<      2   pivtol,pivrel >*/
  310. /* spice version 2g.6  sccsid=dc 3/15/83 */
  311. /*<       common /dc/ tcstar(2),tcstop(2),tcincr(2),icvflg,itcelm(2),kssop, >*/
  312. /*<      1   kinel,kidin,kovar,kidout >*/
  313. /* spice version 2g.6  sccsid=ac 3/15/83 */
  314. /*<       common /ac/ fstart,fstop,fincr,skw2,refprl,spw2,jacflg,idfreq, >*/
  315. /*<      1   inoise,nosprt,nosout,nosin,idist,idprt >*/
  316. /* spice version 2g.6  sccsid=tran 3/15/83 */
  317. /*<       common /tran/ tstep,tstop,tstart,delmax,tdmax,forfre,jtrflg >*/
  318. /* spice version 2g.6  sccsid=outinf 3/15/83 */
  319. /*<       common /outinf/ xincr,string(15),xstart,yvar(8),itab(8),itype(8), >*/
  320. /*<      1   ilogy(8),npoint,numout,kntr,numdgt >*/
  321. /* spice version 2g.6  sccsid=blank 3/15/83 */
  322. /*<       common /blank/ value(200000) >*/
  323. /*<       integer nodplc(64) >*/
  324. /*<       complex cvalue(32) >*/
  325. /*<       equivalence (value(1),nodplc(1),cvalue(1)) >*/
  326.  
  327.  
  328. /*<       dimension titlop(4) >*/
  329. /*<       dimension nnods(50),aname(2) >*/
  330. /*<       data aname / 4htrap, 4hgear / >*/
  331. /*<       data titlop / 8hoption s, 8hummary  , 8h        , 8h         / >*/
  332. /*<       data ndefin / 2h.u / >*/
  333. /*<       data nnods / 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, >*/
  334. /*<      1             2, 4, 3, 4, 0, 0, 4, 0, 1, 0, >*/
  335. /*<      2             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, >*/
  336. /*<      3             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, >*/
  337. /*<      4             2, 2, 2, 0, 0, 0, 0, 0, 0, 0 / >*/
  338. /*<       data aelmt,amodel,aoutpt /7helement,5hmodel,6houtput/ >*/
  339. /*<       data alsdc,alstr,alsac / 2hdc, 4htran, 2hac / >*/
  340.  
  341.  
  342. /*<       call second(t1) >*/
  343.     second_(&t1);
  344. /*<       do 60 id=1,50 >*/
  345.     for (id = 1; id <= 50; ++id) {
  346. /*<       loc=locate(id) >*/
  347.     loc = cirdat_1.locate[id - 1];
  348. /*<    10 if (loc.eq.0) go to 60 >*/
  349. L10:
  350.     if (loc == 0) {
  351.         goto L60;
  352.     }
  353. /*<       if (nodplc(loc+2).ne.ndefin) go to 50 >*/
  354.     if (nodplc[loc + 1] != ndefin) {
  355.         goto L50;
  356.     }
  357. /*<       nogo=1 >*/
  358.     flags_1.nogo = 1;
  359. /*<       locv=nodplc(loc+1) >*/
  360.     locv = nodplc[loc];
  361. /*<       if (id.ge.21) go to 20 >*/
  362.     if (id >= 21) {
  363.         goto L20;
  364.     }
  365. /*<       anam=aelmt >*/
  366.     anam = aelmt;
  367. /*<       go to 40 >*/
  368.     goto L40;
  369. /*<    20 if (id.ge.31) go to 30 >*/
  370. L20:
  371.     if (id >= 31) {
  372.         goto L30;
  373.     }
  374. /*<       anam=amodel >*/
  375.     anam = amodel;
  376. /*<       go to 40 >*/
  377.     goto L40;
  378. /*<    30 anam=aoutpt >*/
  379. L30:
  380.     anam = aoutpt;
  381. /*<    40 write (iofile,41) anam,value(locv) >*/
  382. L40:
  383.     io__18.ciunit = status_1.iofile;
  384.     s_wsfe(&io__18);
  385.     do_fio(&c__1, (char *)&anam, (ftnlen)sizeof(doublereal));
  386.     do_fio(&c__1, (char *)&blank_1.value[locv - 1], (ftnlen)sizeof(
  387.         doublereal));
  388.     e_wsfe();
  389. /*<    41 format('0*error*:  ',2a8,' has been referenced but not defined'/) >*/
  390. /*<    50 loc=nodplc(loc) >*/
  391. L50:
  392.     loc = nodplc[loc - 1];
  393. /*<       go to 10 >*/
  394.     goto L10;
  395. /*<    60 continue >*/
  396. L60:
  397.     ;}
  398. /*<       if (nogo.ne.0) go to 2000 >*/
  399.     if (flags_1.nogo != 0) {
  400.     goto L2000;
  401.     }
  402.  
  403. /*  construct ordered list of user specified nodes */
  404.  
  405. /*<       call getm4(junode,1) >*/
  406.     getm4_(&tabinf_1.junode, &c__1);
  407. /*<       nodplc(junode+1)=0 >*/
  408.     nodplc[tabinf_1.junode] = 0;
  409. /*<       nunods=1 >*/
  410.     cirdat_1.nunods = 1;
  411. /*<       do 180 id=1,50 >*/
  412.     for (id = 1; id <= 50; ++id) {
  413. /*<       if (nnods(id).eq.0) go to 180 >*/
  414.     if (nnods[id - 1] == 0) {
  415.         goto L180;
  416.     }
  417. /*<       loc=locate(id) >*/
  418.     loc = cirdat_1.locate[id - 1];
  419. /*<   110 if (loc.eq.0) go to 180 >*/
  420. L110:
  421.     if (loc == 0) {
  422.         goto L180;
  423.     }
  424. /*<       if (id.le.4) go to 120 >*/
  425.     if (id <= 4) {
  426.         goto L120;
  427.     }
  428. /*<       if (id.le.8) go to 150 >*/
  429.     if (id <= 8) {
  430.         goto L150;
  431.     }
  432. /*<       if (id.eq.19) go to 165 >*/
  433.     if (id == 19) {
  434.         goto L165;
  435.     }
  436. /*<       if (id.le.40) go to 120 >*/
  437.     if (id <= 40) {
  438.         goto L120;
  439.     }
  440. /*<       if (id.le.43) go to 170 >*/
  441.     if (id <= 43) {
  442.         goto L170;
  443.     }
  444. /*<   120 jstop=loc+nnods(id)-1 >*/
  445. L120:
  446.     jstop = loc + nnods[id - 1] - 1;
  447. /*<       do 130 j=loc,jstop >*/
  448.     i_1 = jstop;
  449.     for (j = loc; j <= i_1; ++j) {
  450. /*<       call putnod(nodplc(j+2)) >*/
  451.         putnod_(&nodplc[j + 1]);
  452. /*<   130 continue >*/
  453. /* L130: */
  454.     }
  455. /*<       go to 170 >*/
  456.     goto L170;
  457. /*<   150 call putnod(nodplc(loc+2)) >*/
  458. L150:
  459.     putnod_(&nodplc[loc + 1]);
  460. /*<       call putnod(nodplc(loc+3)) >*/
  461.     putnod_(&nodplc[loc + 2]);
  462. /*<       if (id.ge.7) go to 170 >*/
  463.     if (id >= 7) {
  464.         goto L170;
  465.     }
  466. /*<       locp=nodplc(loc+id+1) >*/
  467.     locp = nodplc[loc + id];
  468. /*<       nssnod=2*nodplc(loc+4) >*/
  469.     nssnod = nodplc[loc + 3] << 1;
  470. /*<   155 do 160 j=1,nssnod >*/
  471. L155:
  472.     i_1 = nssnod;
  473.     for (j = 1; j <= i_1; ++j) {
  474. /*<       call putnod(nodplc(locp+j)) >*/
  475.         putnod_(&nodplc[locp + j - 1]);
  476. /*<   160 continue >*/
  477. /* L160: */
  478.     }
  479. /*<       go to 170 >*/
  480.     goto L170;
  481. /*<   165 locp=nodplc(loc+2) >*/
  482. L165:
  483.     locp = nodplc[loc + 1];
  484. /*<       call sizmem(nodplc(loc+2),nssnod) >*/
  485.     sizmem_(&nodplc[loc + 1], &nssnod);
  486. /*<       go to 155 >*/
  487.     goto L155;
  488. /*<   170 loc=nodplc(loc) >*/
  489. L170:
  490.     loc = nodplc[loc - 1];
  491. /*<       go to 110 >*/
  492.     goto L110;
  493. /*<   180 continue >*/
  494. L180:
  495.     ;}
  496. /*<       if (nogo.ne.0) go to 2000 >*/
  497.     if (flags_1.nogo != 0) {
  498.     goto L2000;
  499.     }
  500. /*<       ncnods=nunods >*/
  501.     cirdat_1.ncnods = cirdat_1.nunods;
  502.  
  503. /*  assign program nodes */
  504.  
  505. /*<   200 do 280 id=1,50 >*/
  506. /* L200: */
  507.     for (id = 1; id <= 50; ++id) {
  508. /*<       if (nnods(id).eq.0) go to 280 >*/
  509.     if (nnods[id - 1] == 0) {
  510.         goto L280;
  511.     }
  512. /*<       loc=locate(id) >*/
  513.     loc = cirdat_1.locate[id - 1];
  514. /*<   210 if (loc.eq.0) go to 280 >*/
  515. L210:
  516.     if (loc == 0) {
  517.         goto L280;
  518.     }
  519. /*<       if (id.le.4) go to 220 >*/
  520.     if (id <= 4) {
  521.         goto L220;
  522.     }
  523. /*<       if (id.le.8) go to 250 >*/
  524.     if (id <= 8) {
  525.         goto L250;
  526.     }
  527. /*<       if (id.eq.19) go to 265 >*/
  528.     if (id == 19) {
  529.         goto L265;
  530.     }
  531. /*<       if (id.le.40) go to 220 >*/
  532.     if (id <= 40) {
  533.         goto L220;
  534.     }
  535. /*<       if (id.le.43) go to 240 >*/
  536.     if (id <= 43) {
  537.         goto L240;
  538.     }
  539. /*<   220 jstop=loc+nnods(id)-1 >*/
  540. L220:
  541.     jstop = loc + nnods[id - 1] - 1;
  542. /*<       do 230 j=loc,jstop >*/
  543.     i_1 = jstop;
  544.     for (j = loc; j <= i_1; ++j) {
  545. /*<       call getnod(nodplc(j+2)) >*/
  546.         getnod_(&nodplc[j + 1]);
  547. /*<   230 continue >*/
  548. /* L230: */
  549.     }
  550. /*<       go to 270 >*/
  551.     goto L270;
  552. /*<   240 if (nodplc(loc+5).eq.0) go to 220 >*/
  553. L240:
  554.     if (nodplc[loc + 4] == 0) {
  555.         goto L220;
  556.     }
  557. /*<       go to 270 >*/
  558.     goto L270;
  559. /*<   250 call getnod(nodplc(loc+2)) >*/
  560. L250:
  561.     getnod_(&nodplc[loc + 1]);
  562. /*<       call getnod(nodplc(loc+3)) >*/
  563.     getnod_(&nodplc[loc + 2]);
  564. /*<       if (id.ge.7) go to 270 >*/
  565.     if (id >= 7) {
  566.         goto L270;
  567.     }
  568. /*<       locp=nodplc(loc+id+1) >*/
  569.     locp = nodplc[loc + id];
  570. /*<       nssnod=2*nodplc(loc+4) >*/
  571.     nssnod = nodplc[loc + 3] << 1;
  572. /*<   255 do 260 j=1,nssnod >*/
  573. L255:
  574.     i_1 = nssnod;
  575.     for (j = 1; j <= i_1; ++j) {
  576. /*<       call getnod(nodplc(locp+j)) >*/
  577.         getnod_(&nodplc[locp + j - 1]);
  578. /*<   260 continue >*/
  579. /* L260: */
  580.     }
  581. /*<       go to 270 >*/
  582.     goto L270;
  583. /*<   265 locp=nodplc(loc+2) >*/
  584. L265:
  585.     locp = nodplc[loc + 1];
  586. /*<       call sizmem(nodplc(loc+2),nssnod) >*/
  587.     sizmem_(&nodplc[loc + 1], &nssnod);
  588. /*<       go to 255 >*/
  589.     goto L255;
  590. /*<   270 loc=nodplc(loc) >*/
  591. L270:
  592.     loc = nodplc[loc - 1];
  593. /*<       go to 210 >*/
  594.     goto L210;
  595. /*<   280 continue >*/
  596. L280:
  597.     ;}
  598.  
  599. /*  check and set .nodeset nodes to their internal values */
  600.  
  601. /*<       call sizmem(nsnod,nic) >*/
  602.     sizmem_(&tabinf_1.nsnod, &nic);
  603. /*<       if(nic.eq.0) go to 300 >*/
  604.     if (nic == 0) {
  605.     goto L300;
  606.     }
  607. /*<       do 290 i=1,nic >*/
  608.     i_1 = nic;
  609.     for (i = 1; i <= i_1; ++i) {
  610. /*<       call getnod(nodplc(nsnod+i)) >*/
  611.     getnod_(&nodplc[tabinf_1.nsnod + i - 1]);
  612. /*<   290 continue >*/
  613. /* L290: */
  614.     }
  615.  
  616. /*   check and set .ic nodes to their internal values */
  617.  
  618. /*<   300 call sizmem(icnod,nic) >*/
  619. L300:
  620.     sizmem_(&tabinf_1.icnod, &nic);
  621. /*<       if(nic.eq.0) go to 320 >*/
  622.     if (nic == 0) {
  623.     goto L320;
  624.     }
  625. /*<       do 310 i=1,nic >*/
  626.     i_1 = nic;
  627.     for (i = 1; i <= i_1; ++i) {
  628. /*<       call getnod(nodplc(icnod+i)) >*/
  629.     getnod_(&nodplc[tabinf_1.icnod + i - 1]);
  630. /*<   310 continue >*/
  631. /* L310: */
  632.     }
  633. /*<   320 if (nogo.ne.0) go to 2000 >*/
  634. L320:
  635.     if (flags_1.nogo != 0) {
  636.     goto L2000;
  637.     }
  638.  
  639. /*  expand subcircuit calls */
  640.  
  641. /*<       call subckt >*/
  642.     subckt_();
  643. /*<       if (nogo.ne.0) go to 2000 >*/
  644.     if (flags_1.nogo != 0) {
  645.     goto L2000;
  646.     }
  647. /*<       if (ncnods.ge.2) go to 400 >*/
  648.     if (cirdat_1.ncnods >= 2) {
  649.     goto L400;
  650.     }
  651. /*<       write (iofile,321) >*/
  652.     io__25.ciunit = status_1.iofile;
  653.     s_wsfe(&io__25);
  654.     e_wsfe();
  655. /*<   321 format('0*error*:  circuit has no nodes'/) >*/
  656. /*<       nogo=1 >*/
  657.     flags_1.nogo = 1;
  658. /*<       go to 2000 >*/
  659.     goto L2000;
  660. /*<   400 numnod=ncnods >*/
  661. L400:
  662.     cirdat_1.numnod = cirdat_1.ncnods;
  663.  
  664. /*  link unsatisfied references */
  665.  
  666. /*<       call lnkref >*/
  667.     lnkref_();
  668. /*<       if (nogo.ne.0) go to 2000 >*/
  669.     if (flags_1.nogo != 0) {
  670.     goto L2000;
  671.     }
  672.  
  673. /*  generate subcircuit element names */
  674.  
  675. /*<       if (jelcnt(19).eq.0) go to 530 >*/
  676.     if (cirdat_1.jelcnt[18] == 0) {
  677.     goto L530;
  678.     }
  679. /*<       do 520 id=1,24 >*/
  680.     for (id = 1; id <= 24; ++id) {
  681. /*<       loc=locate(id) >*/
  682.     loc = cirdat_1.locate[id - 1];
  683. /*<   510 if (loc.eq.0) go to 520 >*/
  684. L510:
  685.     if (loc == 0) {
  686.         goto L520;
  687.     }
  688. /*<       call subnam(loc) >*/
  689.     subnam_(&loc);
  690. /*<       loc=nodplc(loc) >*/
  691.     loc = nodplc[loc - 1];
  692. /*<       go to 510 >*/
  693.     goto L510;
  694. /*<   520 continue >*/
  695. L520:
  696.     ;}
  697.  
  698. /*  translate node initial conditions to device initial conditions */
  699. /*  (capacitance, diode, bjt, jfet and mosfet only) when uic is */
  700. /*  specified on the .tran card */
  701.  
  702. /*<   530 if (nosolv.le.0) go to 600 >*/
  703. L530:
  704.     if (status_1.nosolv <= 0) {
  705.     goto L600;
  706.     }
  707. /*<       call sizmem(icnod,nic) >*/
  708.     sizmem_(&tabinf_1.icnod, &nic);
  709. /*<       if(nic.eq.0) go to 600 >*/
  710.     if (nic == 0) {
  711.     goto L600;
  712.     }
  713. /*<       call getm8(lvnim1,numnod) >*/
  714.     getm8_(&tabinf_1.lvnim1, &cirdat_1.numnod);
  715. /*<       call zero8(value(lvnim1+1),numnod) >*/
  716.     zero8_(&blank_1.value[tabinf_1.lvnim1], &cirdat_1.numnod);
  717. /*<       do 535 i=1,nic >*/
  718.     i_1 = nic;
  719.     for (i = 1; i <= i_1; ++i) {
  720. /*<       node=nodplc(icnod+i) >*/
  721.     node = nodplc[tabinf_1.icnod + i - 1];
  722. /*<   535 value(lvnim1+node)=value(icval+i) >*/
  723. /* L535: */
  724.     blank_1.value[tabinf_1.lvnim1 + node - 1] = blank_1.value[
  725.         tabinf_1.icval + i - 1];
  726.     }
  727. /*<       loc=locate(2) >*/
  728.     loc = cirdat_1.locate[1];
  729. /*<   540 if(loc.eq.0) go to 550 >*/
  730. L540:
  731.     if (loc == 0) {
  732.     goto L550;
  733.     }
  734. /*<       locv=nodplc(loc+1) >*/
  735.     locv = nodplc[loc];
  736. /*<       if(value(locv+2).ne.0.0d0) go to 545 >*/
  737.     if (blank_1.value[locv + 1] != 0.) {
  738.     goto L545;
  739.     }
  740. /*<       node1=nodplc(loc+2) >*/
  741.     node1 = nodplc[loc + 1];
  742. /*<       node2=nodplc(loc+3) >*/
  743.     node2 = nodplc[loc + 2];
  744. /*<       value(locv+2)=value(lvnim1+node1)-value(lvnim1+node2) >*/
  745.     blank_1.value[locv + 1] = blank_1.value[tabinf_1.lvnim1 + node1 - 1] - 
  746.         blank_1.value[tabinf_1.lvnim1 + node2 - 1];
  747. /*<   545 loc=nodplc(loc) >*/
  748. L545:
  749.     loc = nodplc[loc - 1];
  750. /*<       go to 540 >*/
  751.     goto L540;
  752. /*<   550 loc=locate(11) >*/
  753. L550:
  754.     loc = cirdat_1.locate[10];
  755. /*<   555 if(loc.eq.0) go to 565 >*/
  756. L555:
  757.     if (loc == 0) {
  758.     goto L565;
  759.     }
  760. /*<       locv=nodplc(loc+1) >*/
  761.     locv = nodplc[loc];
  762. /*<       if(value(locv+2).ne.0.0d0) go to 560 >*/
  763.     if (blank_1.value[locv + 1] != 0.) {
  764.     goto L560;
  765.     }
  766. /*<       node1=nodplc(loc+2) >*/
  767.     node1 = nodplc[loc + 1];
  768. /*<       node2=nodplc(loc+3) >*/
  769.     node2 = nodplc[loc + 2];
  770. /*<       value(locv+2)=value(lvnim1+node1)-value(lvnim1+node2) >*/
  771.     blank_1.value[locv + 1] = blank_1.value[tabinf_1.lvnim1 + node1 - 1] - 
  772.         blank_1.value[tabinf_1.lvnim1 + node2 - 1];
  773. /*<   560 loc=nodplc(loc) >*/
  774. L560:
  775.     loc = nodplc[loc - 1];
  776. /*<       go to 555 >*/
  777.     goto L555;
  778. /*<   565 loc=locate(12) >*/
  779. L565:
  780.     loc = cirdat_1.locate[11];
  781. /*<   570 if(loc.eq.0) go to 580 >*/
  782. L570:
  783.     if (loc == 0) {
  784.     goto L580;
  785.     }
  786. /*<       locv=nodplc(loc+1) >*/
  787.     locv = nodplc[loc];
  788. /*<       node1=nodplc(loc+2) >*/
  789.     node1 = nodplc[loc + 1];
  790. /*<       node2=nodplc(loc+3) >*/
  791.     node2 = nodplc[loc + 2];
  792. /*<       node3=nodplc(loc+4) >*/
  793.     node3 = nodplc[loc + 3];
  794. /*<       if(value(locv+2).eq.0.0d0) value(locv+2)=value(lvnim1+node2)- >*/
  795. /*<      1  value(lvnim1+node3) >*/
  796.     if (blank_1.value[locv + 1] == 0.) {
  797.     blank_1.value[locv + 1] = blank_1.value[tabinf_1.lvnim1 + node2 - 1] 
  798.         - blank_1.value[tabinf_1.lvnim1 + node3 - 1];
  799.     }
  800. /*<       if(value(locv+3).eq.0.0d0) value(locv+3)=value(lvnim1+node1)- >*/
  801. /*<      1  value(lvnim1+node3) >*/
  802.     if (blank_1.value[locv + 2] == 0.) {
  803.     blank_1.value[locv + 2] = blank_1.value[tabinf_1.lvnim1 + node1 - 1] 
  804.         - blank_1.value[tabinf_1.lvnim1 + node3 - 1];
  805.     }
  806. /*<       loc=nodplc(loc) >*/
  807.     loc = nodplc[loc - 1];
  808. /*<       go to 570 >*/
  809.     goto L570;
  810. /*<   580 loc=locate(13) >*/
  811. L580:
  812.     loc = cirdat_1.locate[12];
  813. /*<   585 if(loc.eq.0) go to 590 >*/
  814. L585:
  815.     if (loc == 0) {
  816.     goto L590;
  817.     }
  818. /*<       locv=nodplc(loc+1) >*/
  819.     locv = nodplc[loc];
  820. /*<       node1=nodplc(loc+2) >*/
  821.     node1 = nodplc[loc + 1];
  822. /*<       node2=nodplc(loc+3) >*/
  823.     node2 = nodplc[loc + 2];
  824. /*<       node3=nodplc(loc+4) >*/
  825.     node3 = nodplc[loc + 3];
  826. /*<       if(value(locv+2).eq.0.0d0) value(locv+2)=value(lvnim1+node1)- >*/
  827. /*<      1  value(lvnim1+node3) >*/
  828.     if (blank_1.value[locv + 1] == 0.) {
  829.     blank_1.value[locv + 1] = blank_1.value[tabinf_1.lvnim1 + node1 - 1] 
  830.         - blank_1.value[tabinf_1.lvnim1 + node3 - 1];
  831.     }
  832. /*<       if(value(locv+3).eq.0.0d0) value(locv+3)=value(lvnim1+node2)- >*/
  833. /*<      1  value(lvnim1+node3) >*/
  834.     if (blank_1.value[locv + 2] == 0.) {
  835.     blank_1.value[locv + 2] = blank_1.value[tabinf_1.lvnim1 + node2 - 1] 
  836.         - blank_1.value[tabinf_1.lvnim1 + node3 - 1];
  837.     }
  838. /*<       loc=nodplc(loc) >*/
  839.     loc = nodplc[loc - 1];
  840. /*<       go to 585 >*/
  841.     goto L585;
  842. /*<   590 loc=locate(14) >*/
  843. L590:
  844.     loc = cirdat_1.locate[13];
  845. /*<   595 if(loc.eq.0) go to 598 >*/
  846. L595:
  847.     if (loc == 0) {
  848.     goto L598;
  849.     }
  850. /*<       locv=nodplc(loc+1) >*/
  851.     locv = nodplc[loc];
  852. /*<       node1=nodplc(loc+2) >*/
  853.     node1 = nodplc[loc + 1];
  854. /*<       node2=nodplc(loc+3) >*/
  855.     node2 = nodplc[loc + 2];
  856. /*<       node3=nodplc(loc+4) >*/
  857.     node3 = nodplc[loc + 3];
  858. /*<       node4=nodplc(loc+5) >*/
  859.     node4 = nodplc[loc + 4];
  860. /*<       if(value(locv+5).eq.0.0d0) value(locv+5)=value(lvnim1+node1)- >*/
  861. /*<      1  value(lvnim1+node3) >*/
  862.     if (blank_1.value[locv + 4] == 0.) {
  863.     blank_1.value[locv + 4] = blank_1.value[tabinf_1.lvnim1 + node1 - 1] 
  864.         - blank_1.value[tabinf_1.lvnim1 + node3 - 1];
  865.     }
  866. /*<       if(value(locv+6).eq.0.0d0) value(locv+6)=value(lvnim1+node2)- >*/
  867. /*<      1  value(lvnim1+node3) >*/
  868.     if (blank_1.value[locv + 5] == 0.) {
  869.     blank_1.value[locv + 5] = blank_1.value[tabinf_1.lvnim1 + node2 - 1] 
  870.         - blank_1.value[tabinf_1.lvnim1 + node3 - 1];
  871.     }
  872. /*<       if(value(locv+7).eq.0.0d0) value(locv+7)=value(lvnim1+node4)- >*/
  873. /*<      1  value(lvnim1+node3) >*/
  874.     if (blank_1.value[locv + 6] == 0.) {
  875.     blank_1.value[locv + 6] = blank_1.value[tabinf_1.lvnim1 + node4 - 1] 
  876.         - blank_1.value[tabinf_1.lvnim1 + node3 - 1];
  877.     }
  878. /*<       loc=nodplc(loc) >*/
  879.     loc = nodplc[loc - 1];
  880. /*<       go to 595 >*/
  881.     goto L595;
  882. /*<   598 call clrmem(lvnim1) >*/
  883. L598:
  884.     clrmem_(&tabinf_1.lvnim1);
  885.  
  886. /*  process sources */
  887.  
  888. /*<   600 if (jtrflg.eq.0) go to 700 >*/
  889. L600:
  890.     if (tran_1.jtrflg == 0) {
  891.     goto L700;
  892.     }
  893. /*<       do 690 id=9,10 >*/
  894.     for (id = 9; id <= 10; ++id) {
  895. /*<       loc=locate(id) >*/
  896.     loc = cirdat_1.locate[id - 1];
  897. /*<   610 if (loc.eq.0) go to 690 >*/
  898. L610:
  899.     if (loc == 0) {
  900.         goto L690;
  901.     }
  902. /*<       locv=nodplc(loc+1) >*/
  903.     locv = nodplc[loc];
  904. /*<       locp=nodplc(loc+5) >*/
  905.     locp = nodplc[loc + 4];
  906. /*<       jtype=nodplc(loc+4)+1 >*/
  907.     jtype = nodplc[loc + 3] + 1;
  908. /*<       go to (680,620,630,640,650,675), jtype >*/
  909.     switch (jtype) {
  910.         case 1:  goto L680;
  911.         case 2:  goto L620;
  912.         case 3:  goto L630;
  913.         case 4:  goto L640;
  914.         case 5:  goto L650;
  915.         case 6:  goto L675;
  916.     }
  917. /*<   620 value(locp+3)=dmax1(value(locp+3),0.0d0) >*/
  918. L620:
  919. /* Computing MAX */
  920.     d_1 = blank_1.value[locp + 2];
  921.     blank_1.value[locp + 2] = max(0.,d_1);
  922. /*<       if (value(locp+4).le.0.0d0) value(locp+4)=tstep >*/
  923.     if (blank_1.value[locp + 3] <= 0.) {
  924.         blank_1.value[locp + 3] = tran_1.tstep;
  925.     }
  926. /*<       if (value(locp+5).le.0.0d0) value(locp+5)=tstep >*/
  927.     if (blank_1.value[locp + 4] <= 0.) {
  928.         blank_1.value[locp + 4] = tran_1.tstep;
  929.     }
  930. /*<       if (value(locp+6).le.0.0d0) value(locp+6)=tstop >*/
  931.     if (blank_1.value[locp + 5] <= 0.) {
  932.         blank_1.value[locp + 5] = tran_1.tstop;
  933.     }
  934. /*<       if (value(locp+7).le.0.0d0) value(locp+7)=tstop >*/
  935.     if (blank_1.value[locp + 6] <= 0.) {
  936.         blank_1.value[locp + 6] = tran_1.tstop;
  937.     }
  938. /*<       temp=value(locp+4)+value(locp+5)+value(locp+6) >*/
  939.     temp = blank_1.value[locp + 3] + blank_1.value[locp + 4] + 
  940.         blank_1.value[locp + 5];
  941. /*<       value(locp+7)=dmax1(value(locp+7),temp) >*/
  942. /* Computing MAX */
  943.     d_1 = blank_1.value[locp + 6];
  944.     blank_1.value[locp + 6] = max(temp,d_1);
  945. /*<       value(locv+1)=value(locp+1) >*/
  946.     blank_1.value[locv] = blank_1.value[locp];
  947. /*<       go to 680 >*/
  948.     goto L680;
  949. /*<   630 if (value(locp+3).le.0.0d0) value(locp+3)=1.0d0/tstop >*/
  950. L630:
  951.     if (blank_1.value[locp + 2] <= 0.) {
  952.         blank_1.value[locp + 2] = 1. / tran_1.tstop;
  953.     }
  954. /*<       value(locp+4)=dmax1(value(locp+4),0.0d0) >*/
  955. /* Computing MAX */
  956.     d_1 = blank_1.value[locp + 3];
  957.     blank_1.value[locp + 3] = max(0.,d_1);
  958. /*<       value(locv+1)=value(locp+1) >*/
  959.     blank_1.value[locv] = blank_1.value[locp];
  960. /*<       go to 680 >*/
  961.     goto L680;
  962. /*<   640 value(locp+3)=dmax1(value(locp+3),0.0d0) >*/
  963. L640:
  964. /* Computing MAX */
  965.     d_1 = blank_1.value[locp + 2];
  966.     blank_1.value[locp + 2] = max(0.,d_1);
  967. /*<       if (value(locp+4).le.0.0d0) value(locp+4)=tstep >*/
  968.     if (blank_1.value[locp + 3] <= 0.) {
  969.         blank_1.value[locp + 3] = tran_1.tstep;
  970.     }
  971. /*<       if (value(locp+5).le.value(locp+3)) >*/
  972. /*<      1   value(locp+5)=value(locp+3)+tstep >*/
  973.     if (blank_1.value[locp + 4] <= blank_1.value[locp + 2]) {
  974.         blank_1.value[locp + 4] = blank_1.value[locp + 2] + tran_1.tstep;
  975.     }
  976. /*<       if (value(locp+6).le.0.0d0) value(locp+6)=tstep >*/
  977.     if (blank_1.value[locp + 5] <= 0.) {
  978.         blank_1.value[locp + 5] = tran_1.tstep;
  979.     }
  980. /*<       value(locv+1)=value(locp+1) >*/
  981.     blank_1.value[locv] = blank_1.value[locp];
  982. /*<       go to 680 >*/
  983.     goto L680;
  984. /*<   650 value(locp+1)=dmin1(dmax1(value(locp+1),0.0d0),tstop) >*/
  985. L650:
  986. /* Computing MAX */
  987. /* Computing MAX */
  988.     d_2 = blank_1.value[locp];
  989.     d_1 = max(0.,d_2);
  990.     blank_1.value[locp] = min(tran_1.tstop,d_1);
  991. /*<       iknt=1 >*/
  992.     iknt = 1;
  993. /*<       call sizmem(nodplc(loc+5),nump) >*/
  994.     sizmem_(&nodplc[loc + 4], &nump);
  995. /*<   660 temp=value(locp+iknt) >*/
  996. L660:
  997.     temp = blank_1.value[locp + iknt - 1];
  998. /*<       if (value(locp+iknt+2).eq.0.0d0) go to 670 >*/
  999.     if (blank_1.value[locp + iknt + 1] == 0.) {
  1000.         goto L670;
  1001.     }
  1002. /*<       if (value(locp+iknt+2).ge.tstop) go to 670 >*/
  1003.     if (blank_1.value[locp + iknt + 1] >= tran_1.tstop) {
  1004.         goto L670;
  1005.     }
  1006. /*<       value(locp+iknt+2)=dmax1(value(locp+iknt+2),temp) >*/
  1007. /* Computing MAX */
  1008.     d_1 = blank_1.value[locp + iknt + 1];
  1009.     blank_1.value[locp + iknt + 1] = max(temp,d_1);
  1010. /*<       if(temp.ne.value(locp+iknt+2)) go to 665 >*/
  1011.     if (temp != blank_1.value[locp + iknt + 1]) {
  1012.         goto L665;
  1013.     }
  1014. /*<       write(iofile,661) value(locv) >*/
  1015.     io__35.ciunit = status_1.iofile;
  1016.     s_wsfe(&io__35);
  1017.     do_fio(&c__1, (char *)&blank_1.value[locv - 1], (ftnlen)sizeof(
  1018.         doublereal));
  1019.     e_wsfe();
  1020. /*<   661 format('0*error*:  element ',a8,' piecewise linear source table no >*/
  1021. /*<      1t increasing in time') >*/
  1022. /*<       nogo=1 >*/
  1023.     flags_1.nogo = 1;
  1024. /*<   665 iknt=iknt+2 >*/
  1025. L665:
  1026.     iknt += 2;
  1027. /*<       if (iknt.lt.nump) go to 660 >*/
  1028.     if (iknt < nump) {
  1029.         goto L660;
  1030.     }
  1031. /*<   670 value(locp+iknt+2)=tstop >*/
  1032. L670:
  1033.     blank_1.value[locp + iknt + 1] = tran_1.tstop;
  1034. /*<       value(locv+1)=value(locp+2) >*/
  1035.     blank_1.value[locv] = blank_1.value[locp + 1];
  1036. /*<       call relmem(nodplc(loc+5),nump-iknt-3) >*/
  1037.     i_1 = nump - iknt - 3;
  1038.     relmem_(&nodplc[loc + 4], &i_1);
  1039. /*<       go to 680 >*/
  1040.     goto L680;
  1041. /*<   675 if (value(locp+3).le.0.0d0) value(locp+3)=1.0d0/tstop >*/
  1042. L675:
  1043.     if (blank_1.value[locp + 2] <= 0.) {
  1044.         blank_1.value[locp + 2] = 1. / tran_1.tstop;
  1045.     }
  1046. /*<       if (value(locp+5).le.0.0d0) value(locp+5)=1.0d0/tstop >*/
  1047.     if (blank_1.value[locp + 4] <= 0.) {
  1048.         blank_1.value[locp + 4] = 1. / tran_1.tstop;
  1049.     }
  1050. /*<       value(locv+1)=value(locp+1) >*/
  1051.     blank_1.value[locv] = blank_1.value[locp];
  1052. /*<   680 loc=nodplc(loc) >*/
  1053. L680:
  1054.     loc = nodplc[loc - 1];
  1055. /*<       go to 610 >*/
  1056.     goto L610;
  1057. /*<   690 continue >*/
  1058. L690:
  1059.     ;}
  1060.  
  1061. /*  use default values for mos device geometries if not specified */
  1062.  
  1063. /*<   700 loc=locate(14) >*/
  1064. L700:
  1065.     loc = cirdat_1.locate[13];
  1066. /*<   710 if(loc.eq.0) go to 720 >*/
  1067. L710:
  1068.     if (loc == 0) {
  1069.     goto L720;
  1070.     }
  1071. /*<       locv=nodplc(loc+1) >*/
  1072.     locv = nodplc[loc];
  1073. /*<       if(value(locv+1).le.0.0d0) value(locv+1)=defl >*/
  1074.     if (blank_1.value[locv] <= 0.) {
  1075.     blank_1.value[locv] = miscel_1.defl;
  1076.     }
  1077. /*<       if(value(locv+2).le.0.0d0) value(locv+2)=defw >*/
  1078.     if (blank_1.value[locv + 1] <= 0.) {
  1079.     blank_1.value[locv + 1] = miscel_1.defw;
  1080.     }
  1081. /*<       if(value(locv+3).le.0.0d0) value(locv+3)=defad >*/
  1082.     if (blank_1.value[locv + 2] <= 0.) {
  1083.     blank_1.value[locv + 2] = miscel_1.defad;
  1084.     }
  1085. /*<       if(value(locv+4).le.0.0d0) value(locv+4)=defas >*/
  1086.     if (blank_1.value[locv + 3] <= 0.) {
  1087.     blank_1.value[locv + 3] = miscel_1.defas;
  1088.     }
  1089. /*<       loc=nodplc(loc) >*/
  1090.     loc = nodplc[loc - 1];
  1091. /*<       go to 710 >*/
  1092.     goto L710;
  1093.  
  1094. /*  print listing of elements, process device models, */
  1095. /*  and check topology */
  1096.  
  1097. /*<   720 if (iprntl.eq.0) go to 730 >*/
  1098. L720:
  1099.     if (flags_1.iprntl == 0) {
  1100.     goto L730;
  1101.     }
  1102. /*<       call elprnt >*/
  1103.     elprnt_();
  1104. /*<   730 call topchk >*/
  1105. L730:
  1106.     topchk_();
  1107. /*<       call modchk >*/
  1108.     modchk_();
  1109. /*<       if (nogo.ne.0) go to 2000 >*/
  1110.     if (flags_1.nogo != 0) {
  1111.     goto L2000;
  1112.     }
  1113.  
  1114. /*  invert resistance values */
  1115.  
  1116. /*<   800 loc=locate(1) >*/
  1117. /* L800: */
  1118.     loc = cirdat_1.locate[0];
  1119. /*<   810 if (loc.eq.0) go to 900 >*/
  1120. L810:
  1121.     if (loc == 0) {
  1122.     goto L900;
  1123.     }
  1124. /*<       locv=nodplc(loc+1) >*/
  1125.     locv = nodplc[loc];
  1126. /*<       value(locv+1)=1.0d0/value(locv+2) >*/
  1127.     blank_1.value[locv] = 1. / blank_1.value[locv + 1];
  1128. /*<       loc=nodplc(loc) >*/
  1129.     loc = nodplc[loc - 1];
  1130. /*<       go to 810 >*/
  1131.     goto L810;
  1132.  
  1133. /*  process mutual inductors */
  1134.  
  1135. /*<   900 loc=locate(4) >*/
  1136. L900:
  1137.     loc = cirdat_1.locate[3];
  1138. /*<   910 if (loc.eq.0) go to 1000 >*/
  1139. L910:
  1140.     if (loc == 0) {
  1141.     goto L1000;
  1142.     }
  1143. /*<       locv=nodplc(loc+1) >*/
  1144.     locv = nodplc[loc];
  1145. /*<       nl1=nodplc(loc+2) >*/
  1146.     nl1 = nodplc[loc + 1];
  1147. /*<       lptr1=nodplc(nl1+1) >*/
  1148.     lptr1 = nodplc[nl1];
  1149. /*<       nl2=nodplc(loc+3) >*/
  1150.     nl2 = nodplc[loc + 2];
  1151. /*<       lptr2=nodplc(nl2+1) >*/
  1152.     lptr2 = nodplc[nl2];
  1153. /*<       value(locv+1)=value(locv+1)*dsqrt(value(lptr1+1)*value(lptr2+1)) >*/
  1154.     blank_1.value[locv] *= sqrt(blank_1.value[lptr1] * blank_1.value[lptr2]);
  1155. /*<       loc=nodplc(loc) >*/
  1156.     loc = nodplc[loc - 1];
  1157. /*<       go to 910 >*/
  1158.     goto L910;
  1159.  
  1160. /*  limit delmax  if transmission lines in circuit */
  1161.  
  1162. /*<  1000 if (jtrflg.eq.0) go to 1200 >*/
  1163. L1000:
  1164.     if (tran_1.jtrflg == 0) {
  1165.     goto L1200;
  1166.     }
  1167. /*<       tdmax=0.0d0 >*/
  1168.     tran_1.tdmax = 0.;
  1169. /*<       loc=locate(17) >*/
  1170.     loc = cirdat_1.locate[16];
  1171. /*<  1010 if (loc.eq.0) go to 1200 >*/
  1172. L1010:
  1173.     if (loc == 0) {
  1174.     goto L1200;
  1175.     }
  1176. /*<       locv=nodplc(loc+1) >*/
  1177.     locv = nodplc[loc];
  1178. /*<       delmax=dmin1(delmax,value(locv+2)/2.0d0) >*/
  1179. /* Computing MAX */
  1180.     d_1 = tran_1.delmax, d_2 = blank_1.value[locv + 1] / 2.;
  1181.     tran_1.delmax = min(d_2,d_1);
  1182. /*<       tdmax=dmax1(tdmax,value(locv+2)) >*/
  1183. /* Computing MAX */
  1184.     d_1 = tran_1.tdmax, d_2 = blank_1.value[locv + 1];
  1185.     tran_1.tdmax = max(d_2,d_1);
  1186. /*<       loc=nodplc(loc) >*/
  1187.     loc = nodplc[loc - 1];
  1188. /*<       go to 1010 >*/
  1189.     goto L1010;
  1190.  
  1191. /*  process source parameters */
  1192.  
  1193. /*<  1200 numbkp=0 >*/
  1194. L1200:
  1195.     tabinf_1.numbkp = 0;
  1196. /*<       if (jtrflg.eq.0) go to 1205 >*/
  1197.     if (tran_1.jtrflg == 0) {
  1198.     goto L1205;
  1199.     }
  1200. /*<       tol=1.0d-2*delmax >*/
  1201.     tol = tran_1.delmax * .01;
  1202. /*<       numbkp=2 >*/
  1203.     tabinf_1.numbkp = 2;
  1204. /*<       call getm8(lsbkpt,numbkp) >*/
  1205.     getm8_(&tabinf_1.lsbkpt, &tabinf_1.numbkp);
  1206. /*<       value(lsbkpt+1)=0.0d0 >*/
  1207.     blank_1.value[tabinf_1.lsbkpt] = 0.;
  1208. /*<       value(lsbkpt+2)=tstop >*/
  1209.     blank_1.value[tabinf_1.lsbkpt + 1] = tran_1.tstop;
  1210. /*<  1205 do 1290 id=9,10 >*/
  1211. L1205:
  1212.     for (id = 9; id <= 10; ++id) {
  1213. /*<       loc=locate(id) >*/
  1214.     loc = cirdat_1.locate[id - 1];
  1215. /*<  1210 if (loc.eq.0) go to 1290 >*/
  1216. L1210:
  1217.     if (loc == 0) {
  1218.         goto L1290;
  1219.     }
  1220. /*<       locv=nodplc(loc+1) >*/
  1221.     locv = nodplc[loc];
  1222. /*<       locp=nodplc(loc+5) >*/
  1223.     locp = nodplc[loc + 4];
  1224. /*<       temp=value(locv+3)/rad >*/
  1225.     temp = blank_1.value[locv + 2] / knstnt_1.rad;
  1226. /*<       value(locv+3)=value(locv+2)*dsin(temp) >*/
  1227.     blank_1.value[locv + 2] = blank_1.value[locv + 1] * sin(temp);
  1228. /*<       value(locv+2)=value(locv+2)*dcos(temp) >*/
  1229.     blank_1.value[locv + 1] *= cos(temp);
  1230. /*<       if (jtrflg.eq.0) go to 1280 >*/
  1231.     if (tran_1.jtrflg == 0) {
  1232.         goto L1280;
  1233.     }
  1234. /*<       jtype=nodplc(loc+4)+1 >*/
  1235.     jtype = nodplc[loc + 3] + 1;
  1236. /*<       go to (1280,1220,1230,1235,1240,1260), jtype >*/
  1237.     switch (jtype) {
  1238.         case 1:  goto L1280;
  1239.         case 2:  goto L1220;
  1240.         case 3:  goto L1230;
  1241.         case 4:  goto L1235;
  1242.         case 5:  goto L1240;
  1243.         case 6:  goto L1260;
  1244.     }
  1245. /*<  1220 value(locp+4)=value(locp+4)+value(locp+3) >*/
  1246. L1220:
  1247.     blank_1.value[locp + 3] += blank_1.value[locp + 2];
  1248. /*<       temp=value(locp+5) >*/
  1249.     temp = blank_1.value[locp + 4];
  1250. /*<       value(locp+5)=value(locp+4)+value(locp+6) >*/
  1251.     blank_1.value[locp + 4] = blank_1.value[locp + 3] + blank_1.value[
  1252.         locp + 5];
  1253. /*<       value(locp+6)=value(locp+5)+temp >*/
  1254.     blank_1.value[locp + 5] = blank_1.value[locp + 4] + temp;
  1255. /*<       time=0.0d0 >*/
  1256.     status_1.time = 0.;
  1257. /*<  1225 call extmem(lsbkpt,4) >*/
  1258. L1225:
  1259.     extmem_(&tabinf_1.lsbkpt, &c__4);
  1260. /*<       value(lsbkpt+numbkp+1)=value(locp+3)+time >*/
  1261.     blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp] = blank_1.value[locp 
  1262.         + 2] + status_1.time;
  1263. /*<       value(lsbkpt+numbkp+2)=value(locp+4)+time >*/
  1264.     blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp + 1] = blank_1.value[
  1265.         locp + 3] + status_1.time;
  1266. /*<       value(lsbkpt+numbkp+3)=value(locp+5)+time >*/
  1267.     blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp + 2] = blank_1.value[
  1268.         locp + 4] + status_1.time;
  1269. /*<       value(lsbkpt+numbkp+4)=value(locp+6)+time >*/
  1270.     blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp + 3] = blank_1.value[
  1271.         locp + 5] + status_1.time;
  1272. /*<       numbkp=numbkp+4 >*/
  1273.     tabinf_1.numbkp += 4;
  1274. /*<       time=time+value(locp+7) >*/
  1275.     status_1.time += blank_1.value[locp + 6];
  1276. /*<       if (time.ge.tstop) go to 1280 >*/
  1277.     if (status_1.time >= tran_1.tstop) {
  1278.         goto L1280;
  1279.     }
  1280. /*<       go to 1225 >*/
  1281.     goto L1225;
  1282. /*<  1230 value(locp+3)=value(locp+3)*twopi >*/
  1283. L1230:
  1284.     blank_1.value[locp + 2] *= knstnt_1.twopi;
  1285. /*<       call extmem(lsbkpt,1) >*/
  1286.     extmem_(&tabinf_1.lsbkpt, &c__1);
  1287. /*<  1231 value(lsbkpt+numbkp+1)=value(locp+4) >*/
  1288. /* L1231: */
  1289.     blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp] = blank_1.value[locp 
  1290.         + 3];
  1291. /*<       numbkp=numbkp+1 >*/
  1292.     ++tabinf_1.numbkp;
  1293. /*<       go to 1280 >*/
  1294.     goto L1280;
  1295. /*<  1235 call extmem(lsbkpt,2) >*/
  1296. L1235:
  1297.     extmem_(&tabinf_1.lsbkpt, &c__2);
  1298. /*<       value(lsbkpt+numbkp+1)=value(locp+3) >*/
  1299.     blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp] = blank_1.value[locp 
  1300.         + 2];
  1301. /*<       value(lsbkpt+numbkp+2)=value(locp+5) >*/
  1302.     blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp + 1] = blank_1.value[
  1303.         locp + 4];
  1304. /*<       numbkp=numbkp+2 >*/
  1305.     tabinf_1.numbkp += 2;
  1306. /*<       go to 1280 >*/
  1307.     goto L1280;
  1308. /*<  1240 iknt=1 >*/
  1309. L1240:
  1310.     iknt = 1;
  1311. /*<       call sizmem(nodplc(loc+5),nump) >*/
  1312.     sizmem_(&nodplc[loc + 4], &nump);
  1313. /*<  1250 call extmem(lsbkpt,1) >*/
  1314. L1250:
  1315.     extmem_(&tabinf_1.lsbkpt, &c__1);
  1316. /*<       value(lsbkpt+numbkp+1)=value(locp+iknt) >*/
  1317.     blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp] = blank_1.value[locp 
  1318.         + iknt - 1];
  1319. /*<       numbkp=numbkp+1 >*/
  1320.     ++tabinf_1.numbkp;
  1321. /*<       iknt=iknt+2 >*/
  1322.     iknt += 2;
  1323. /*<       if (iknt.le.nump) go to 1250 >*/
  1324.     if (iknt <= nump) {
  1325.         goto L1250;
  1326.     }
  1327. /*<       go to 1280 >*/
  1328.     goto L1280;
  1329. /*<  1260 value(locp+3)=value(locp+3)*twopi >*/
  1330. L1260:
  1331.     blank_1.value[locp + 2] *= knstnt_1.twopi;
  1332. /*<       value(locp+5)=value(locp+5)*twopi >*/
  1333.     blank_1.value[locp + 4] *= knstnt_1.twopi;
  1334. /*<  1280 loc=nodplc(loc) >*/
  1335. L1280:
  1336.     loc = nodplc[loc - 1];
  1337. /*<       go to 1210 >*/
  1338.     goto L1210;
  1339. /*<  1290 continue >*/
  1340. L1290:
  1341.     ;}
  1342.  
  1343. /*  augment breakpoint table for transmission line delays */
  1344.  
  1345. /*<       if (jtrflg.eq.0) go to 1300 >*/
  1346.     if (tran_1.jtrflg == 0) {
  1347.     goto L1300;
  1348.     }
  1349. /*<       loc=locate(17) >*/
  1350.     loc = cirdat_1.locate[16];
  1351. /*<  1292 if (loc.eq.0) go to 1300 >*/
  1352. L1292:
  1353.     if (loc == 0) {
  1354.     goto L1300;
  1355.     }
  1356. /*<       locv=nodplc(loc+1) >*/
  1357.     locv = nodplc[loc];
  1358. /*<       td=value(locv+2) >*/
  1359.     td = blank_1.value[locv + 1];
  1360. /*<       ntemp=numbkp >*/
  1361.     ntemp = tabinf_1.numbkp;
  1362. /*<       do 1296 ibkp=1,ntemp >*/
  1363.     i_1 = ntemp;
  1364.     for (ibkp = 1; ibkp <= i_1; ++ibkp) {
  1365. /*<       time=value(lsbkpt+ibkp) >*/
  1366.     status_1.time = blank_1.value[tabinf_1.lsbkpt + ibkp - 1];
  1367. /*<  1294 time=time+td >*/
  1368. L1294:
  1369.     status_1.time += td;
  1370. /*<       if (time.ge.tstop) go to 1296 >*/
  1371.     if (status_1.time >= tran_1.tstop) {
  1372.         goto L1296;
  1373.     }
  1374. /*<       call extmem(lsbkpt,1) >*/
  1375.     extmem_(&tabinf_1.lsbkpt, &c__1);
  1376. /*<       value(lsbkpt+numbkp+1)=time >*/
  1377.     blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp] = status_1.time;
  1378. /*<       numbkp=numbkp+1 >*/
  1379.     ++tabinf_1.numbkp;
  1380. /*<       go to 1294 >*/
  1381.     goto L1294;
  1382. /*<  1296 continue >*/
  1383. L1296:
  1384.     ;}
  1385. /*<       call shlsrt(value(lsbkpt+1),numbkp) >*/
  1386.     shlsrt_(&blank_1.value[tabinf_1.lsbkpt], &tabinf_1.numbkp);
  1387. /*<       nbkpt=1 >*/
  1388.     nbkpt = 1;
  1389. /*<       do 1298 i=2,numbkp >*/
  1390.     i_1 = tabinf_1.numbkp;
  1391.     for (i = 2; i <= i_1; ++i) {
  1392. /*<       if ((value(lsbkpt+i)-value(lsbkpt+nbkpt)).lt.tol) go to 1298 >*/
  1393.     if (blank_1.value[tabinf_1.lsbkpt + i - 1] - blank_1.value[
  1394.         tabinf_1.lsbkpt + nbkpt - 1] < tol) {
  1395.         goto L1298;
  1396.     }
  1397. /*<       nbkpt=nbkpt+1 >*/
  1398.     ++nbkpt;
  1399. /*<       value(lsbkpt+nbkpt)=value(lsbkpt+i) >*/
  1400.     blank_1.value[tabinf_1.lsbkpt + nbkpt - 1] = blank_1.value[
  1401.         tabinf_1.lsbkpt + i - 1];
  1402. /*<       if (value(lsbkpt+nbkpt).ge.tstop) go to 1299 >*/
  1403.     if (blank_1.value[tabinf_1.lsbkpt + nbkpt - 1] >= tran_1.tstop) {
  1404.         goto L1299;
  1405.     }
  1406. /*<  1298 continue >*/
  1407. L1298:
  1408.     ;}
  1409. /*<  1299 call relmem(lsbkpt,numbkp-nbkpt) >*/
  1410. L1299:
  1411.     i_1 = tabinf_1.numbkp - nbkpt;
  1412.     relmem_(&tabinf_1.lsbkpt, &i_1);
  1413. /*<       numbkp=nbkpt >*/
  1414.     tabinf_1.numbkp = nbkpt;
  1415. /*<       value(lsbkpt+numbkp)=dmax1(value(lsbkpt+numbkp),tstop) >*/
  1416. /* Computing MAX */
  1417.     d_1 = blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp - 1];
  1418.     blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp - 1] = max(tran_1.tstop,
  1419.         d_1);
  1420. /*<       loc=nodplc(loc) >*/
  1421.     loc = nodplc[loc - 1];
  1422. /*<       go to 1292 >*/
  1423.     goto L1292;
  1424.  
  1425. /*  finish breakpoint table */
  1426.  
  1427. /*<  1300 if (jtrflg.eq.0) go to 1600 >*/
  1428. L1300:
  1429.     if (tran_1.jtrflg == 0) {
  1430.     goto L1600;
  1431.     }
  1432. /*<       call extmem(lsbkpt,1) >*/
  1433.     extmem_(&tabinf_1.lsbkpt, &c__1);
  1434. /*<       value(lsbkpt+numbkp+1)=tstop >*/
  1435.     blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp] = tran_1.tstop;
  1436. /*<       numbkp=numbkp+1 >*/
  1437.     ++tabinf_1.numbkp;
  1438. /*<       call shlsrt(value(lsbkpt+1),numbkp) >*/
  1439.     shlsrt_(&blank_1.value[tabinf_1.lsbkpt], &tabinf_1.numbkp);
  1440. /*<       nbkpt=1 >*/
  1441.     nbkpt = 1;
  1442. /*<       do 1310 i=2,numbkp >*/
  1443.     i_1 = tabinf_1.numbkp;
  1444.     for (i = 2; i <= i_1; ++i) {
  1445. /*<       if ((value(lsbkpt+i)-value(lsbkpt+nbkpt)).lt.tol) go to 1310 >*/
  1446.     if (blank_1.value[tabinf_1.lsbkpt + i - 1] - blank_1.value[
  1447.         tabinf_1.lsbkpt + nbkpt - 1] < tol) {
  1448.         goto L1310;
  1449.     }
  1450. /*<       nbkpt=nbkpt+1 >*/
  1451.     ++nbkpt;
  1452. /*<       value(lsbkpt+nbkpt)=value(lsbkpt+i) >*/
  1453.     blank_1.value[tabinf_1.lsbkpt + nbkpt - 1] = blank_1.value[
  1454.         tabinf_1.lsbkpt + i - 1];
  1455. /*<       if (value(lsbkpt+nbkpt).ge.tstop) go to 1320 >*/
  1456.     if (blank_1.value[tabinf_1.lsbkpt + nbkpt - 1] >= tran_1.tstop) {
  1457.         goto L1320;
  1458.     }
  1459. /*<  1310 continue >*/
  1460. L1310:
  1461.     ;}
  1462. /*<  1320 call relmem(lsbkpt,numbkp-nbkpt) >*/
  1463. L1320:
  1464.     i_1 = tabinf_1.numbkp - nbkpt;
  1465.     relmem_(&tabinf_1.lsbkpt, &i_1);
  1466. /*<       numbkp=nbkpt >*/
  1467.     tabinf_1.numbkp = nbkpt;
  1468. /*<       value(lsbkpt+numbkp)=dmax1(value(lsbkpt+numbkp),tstop) >*/
  1469. /* Computing MAX */
  1470.     d_1 = blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp - 1];
  1471.     blank_1.value[tabinf_1.lsbkpt + tabinf_1.numbkp - 1] = max(tran_1.tstop,
  1472.         d_1);
  1473.  
  1474. /*  print option summary */
  1475.  
  1476. /*<  1600 if (iprnto.eq.0) go to 1700 >*/
  1477. L1600:
  1478.     if (flags_1.iprnto == 0) {
  1479.     goto L1700;
  1480.     }
  1481. /*<       call title(0,lwidth,1,titlop) >*/
  1482.     title_(&c__0, &miscel_1.lwidth, &c__1, titlop);
  1483. /*<       write (iofile,1601) gmin,reltol,abstol,vntol,lvlcod,itl1,itl2 >*/
  1484.     io__45.ciunit = status_1.iofile;
  1485.     s_wsfe(&io__45);
  1486.     do_fio(&c__1, (char *)&knstnt_1.gmin, (ftnlen)sizeof(doublereal));
  1487.     do_fio(&c__1, (char *)&knstnt_1.reltol, (ftnlen)sizeof(doublereal));
  1488.     do_fio(&c__1, (char *)&knstnt_1.abstol, (ftnlen)sizeof(doublereal));
  1489.     do_fio(&c__1, (char *)&knstnt_1.vntol, (ftnlen)sizeof(doublereal));
  1490.     do_fio(&c__1, (char *)&flags_1.lvlcod, (ftnlen)sizeof(integer));
  1491.     do_fio(&c__1, (char *)&flags_1.itl1, (ftnlen)sizeof(integer));
  1492.     do_fio(&c__1, (char *)&flags_1.itl2, (ftnlen)sizeof(integer));
  1493.     e_wsfe();
  1494. /*<  1601 format('0dc analysis -',/, >*/
  1495. /*<      1   '0    gmin   = ',1pd10.3,/, >*/
  1496. /*<      2   '     reltol = ',  d10.3,/, >*/
  1497. /*<      3   '     abstol = ',  d10.3,/, >*/
  1498. /*<      4   '     vntol  = ',  d10.3,/, >*/
  1499. /*<      5   '     lvlcod = ',     i6,/, >*/
  1500. /*<      6   '     itl1   = ',     i6,/, >*/
  1501. /*<      7   '     itl2   = ',     i6,/) >*/
  1502. /*<       write (iofile,1605) pivtol,pivrel >*/
  1503.     io__46.ciunit = status_1.iofile;
  1504.     s_wsfe(&io__46);
  1505.     do_fio(&c__1, (char *)&knstnt_1.pivtol, (ftnlen)sizeof(doublereal));
  1506.     do_fio(&c__1, (char *)&knstnt_1.pivrel, (ftnlen)sizeof(doublereal));
  1507.     e_wsfe();
  1508. /*<  1605 format( >*/
  1509. /*<      1   '     pivtol = ',1pd10.3,/, >*/
  1510. /*<      2   '     pivrel = ',  d10.3) >*/
  1511. /*<       write (iofile,1611) aname(method),maxord,chgtol,trtol,lvltim,xmu, >*/
  1512. /*<      1   itl3,itl4,itl5 >*/
  1513.     io__47.ciunit = status_1.iofile;
  1514.     s_wsfe(&io__47);
  1515.     do_fio(&c__1, (char *)&aname[status_1.method - 1], (ftnlen)sizeof(
  1516.         doublereal));
  1517.     do_fio(&c__1, (char *)&status_1.maxord, (ftnlen)sizeof(integer));
  1518.     do_fio(&c__1, (char *)&knstnt_1.chgtol, (ftnlen)sizeof(doublereal));
  1519.     do_fio(&c__1, (char *)&knstnt_1.trtol, (ftnlen)sizeof(doublereal));
  1520.     do_fio(&c__1, (char *)&flags_1.lvltim, (ftnlen)sizeof(integer));
  1521.     do_fio(&c__1, (char *)&status_1.xmu, (ftnlen)sizeof(doublereal));
  1522.     do_fio(&c__1, (char *)&flags_1.itl3, (ftnlen)sizeof(integer));
  1523.     do_fio(&c__1, (char *)&flags_1.itl4, (ftnlen)sizeof(integer));
  1524.     do_fio(&c__1, (char *)&flags_1.itl5, (ftnlen)sizeof(integer));
  1525.     e_wsfe();
  1526. /*<  1611 format('0transient analysis -',/, >*/
  1527. /*<      1   '0    method =  ',a8,/, >*/
  1528. /*<      2   '     maxord = ',     i6,/, >*/
  1529. /*<      3   '     chgtol = ',1pd10.3,/, >*/
  1530. /*<      4   '     trtol  = ',  d10.3,/, >*/
  1531. /*<      5   '     lvltim = ',     i6,/, >*/
  1532. /*<      6   '     mu     = ',0pf10.3,/, >*/
  1533. /*<      7   '     itl3   = ',     i6,/, >*/
  1534. /*<      8   '     itl4   = ',     i6,/, >*/
  1535. /*<      9   '     itl5   = ',     i6,/) >*/
  1536. /*<       write (iofile,1621) limpts,limtim,maxtim,numdgt,value(itemps+1), >*/
  1537. /*<      1   defl,defw,defad,defas >*/
  1538.     io__48.ciunit = status_1.iofile;
  1539.     s_wsfe(&io__48);
  1540.     do_fio(&c__1, (char *)&flags_1.limpts, (ftnlen)sizeof(integer));
  1541.     do_fio(&c__1, (char *)&flags_1.limtim, (ftnlen)sizeof(integer));
  1542.     do_fio(&c__1, (char *)&cje_1.maxtim, (ftnlen)sizeof(integer));
  1543.     do_fio(&c__1, (char *)&outinf_1.numdgt, (ftnlen)sizeof(integer));
  1544.     do_fio(&c__1, (char *)&blank_1.value[tabinf_1.itemps], (ftnlen)sizeof(
  1545.         doublereal));
  1546.     do_fio(&c__1, (char *)&miscel_1.defl, (ftnlen)sizeof(doublereal));
  1547.     do_fio(&c__1, (char *)&miscel_1.defw, (ftnlen)sizeof(doublereal));
  1548.     do_fio(&c__1, (char *)&miscel_1.defad, (ftnlen)sizeof(doublereal));
  1549.     do_fio(&c__1, (char *)&miscel_1.defas, (ftnlen)sizeof(doublereal));
  1550.     e_wsfe();
  1551. /*<  1621 format('0miscellaneous -',/, >*/
  1552. /*<      1   '0    limpts = ',     i6,/, >*/
  1553. /*<      2   '     limtim = ',     i6,/, >*/
  1554. /*<      3   '     cptime = ',     i9,/, >*/
  1555. /*<      4   '     numdgt = ',     i6,/, >*/
  1556. /*<      5   '     tnom   = ',0pf10.3,/, >*/
  1557. /*<      6   '     defl   = ',1pd10.3,/, >*/
  1558. /*<      7   '     defw   = ',d10.3,/, >*/
  1559. /*<      8   '     defad  = ',d10.3,/, >*/
  1560. /*<      9   '     defas  = ',d10.3) >*/
  1561.  
  1562. /*  miscellaneous error checking */
  1563.  
  1564. /*<  1700 if (icvflg.eq.0) go to 1720 >*/
  1565. L1700:
  1566.     if (dc_1.icvflg == 0) {
  1567.     goto L1720;
  1568.     }
  1569. /*<       if (icvflg.le.limpts) go to 1710 >*/
  1570.     if (dc_1.icvflg <= flags_1.limpts) {
  1571.     goto L1710;
  1572.     }
  1573. /*<       icvflg=0 >*/
  1574.     dc_1.icvflg = 0;
  1575. /*<       write (iofile,1701) limpts,alsdc >*/
  1576.     io__49.ciunit = status_1.iofile;
  1577.     s_wsfe(&io__49);
  1578.     do_fio(&c__1, (char *)&flags_1.limpts, (ftnlen)sizeof(integer));
  1579.     do_fio(&c__1, (char *)&alsdc, (ftnlen)sizeof(doublereal));
  1580.     e_wsfe();
  1581. /*<  1701 format('0warning:  more than ',i5,' points for ',a4,' analysis,',/ >*/
  1582. /*<      11x,'analysis omitted.  this limit may be overridden using the ',/ >*/
  1583. /*<      21x,'limpts parameter on the .option card'/) >*/
  1584. /*<       go to 1720 >*/
  1585.     goto L1720;
  1586. /*<  1710 if ((jelcnt(31)+jelcnt(36)).gt.0) go to 1720 >*/
  1587. L1710:
  1588.     if (cirdat_1.jelcnt[30] + cirdat_1.jelcnt[35] > 0) {
  1589.     goto L1720;
  1590.     }
  1591. /*<       if(ipostp.ne.0) go to 1720 >*/
  1592.     if (status_1.ipostp != 0) {
  1593.     goto L1720;
  1594.     }
  1595. /*<       icvflg=0 >*/
  1596.     dc_1.icvflg = 0;
  1597. /*<       write (iofile,1711) alsdc >*/
  1598.     io__50.ciunit = status_1.iofile;
  1599.     s_wsfe(&io__50);
  1600.     do_fio(&c__1, (char *)&alsdc, (ftnlen)sizeof(doublereal));
  1601.     e_wsfe();
  1602. /*<  1711 format('0warning:  no ',a4,' outputs specified .', >*/
  1603. /*<      1  '.. analysis omitted'/) >*/
  1604. /*<  1720 if (jtrflg.eq.0) go to 1740 >*/
  1605. L1720:
  1606.     if (tran_1.jtrflg == 0) {
  1607.     goto L1740;
  1608.     }
  1609. /*<       if (method.eq.1) maxord=2 >*/
  1610.     if (status_1.method == 1) {
  1611.     status_1.maxord = 2;
  1612.     }
  1613. /*<       if ((method.eq.2).and.(maxord.ge.3)) lvltim=2 >*/
  1614.     if (status_1.method == 2 && status_1.maxord >= 3) {
  1615.     flags_1.lvltim = 2;
  1616.     }
  1617. /*<       if (jtrflg.le.limpts) go to 1730 >*/
  1618.     if (tran_1.jtrflg <= flags_1.limpts) {
  1619.     goto L1730;
  1620.     }
  1621. /*<       jtrflg=0 >*/
  1622.     tran_1.jtrflg = 0;
  1623. /*<       write (iofile,1701) limpts,alstr >*/
  1624.     io__51.ciunit = status_1.iofile;
  1625.     s_wsfe(&io__51);
  1626.     do_fio(&c__1, (char *)&flags_1.limpts, (ftnlen)sizeof(integer));
  1627.     do_fio(&c__1, (char *)&alstr, (ftnlen)sizeof(doublereal));
  1628.     e_wsfe();
  1629. /*<       go to 1740 >*/
  1630.     goto L1740;
  1631. /*<  1730 if ((jelcnt(32)+jelcnt(37)+nfour).gt.0) go to 1735 >*/
  1632. L1730:
  1633.     if (cirdat_1.jelcnt[31] + cirdat_1.jelcnt[36] + tabinf_1.nfour > 0) {
  1634.     goto L1735;
  1635.     }
  1636. /*<       if(ipostp.ne.0) go to 1735 >*/
  1637.     if (status_1.ipostp != 0) {
  1638.     goto L1735;
  1639.     }
  1640. /*<       jtrflg=0 >*/
  1641.     tran_1.jtrflg = 0;
  1642. /*<       write (iofile,1711) alstr >*/
  1643.     io__52.ciunit = status_1.iofile;
  1644.     s_wsfe(&io__52);
  1645.     do_fio(&c__1, (char *)&alstr, (ftnlen)sizeof(doublereal));
  1646.     e_wsfe();
  1647. /*<       go to 1740 >*/
  1648.     goto L1740;
  1649. /*<  1735 if (nfour.eq.0) go to 1740 >*/
  1650. L1735:
  1651.     if (tabinf_1.nfour == 0) {
  1652.     goto L1740;
  1653.     }
  1654. /*<       forprd=1.0d0/forfre >*/
  1655.     forprd = 1. / tran_1.forfre;
  1656. /*<       if ((tstop-forprd).ge.(tstart-1.0d-12)) go to 1740 >*/
  1657.     if (tran_1.tstop - forprd >= tran_1.tstart - 1e-12) {
  1658.     goto L1740;
  1659.     }
  1660. /*<       nfour=0 >*/
  1661.     tabinf_1.nfour = 0;
  1662. /*<       call clrmem(ifour) >*/
  1663.     clrmem_(&tabinf_1.ifour);
  1664. /*<       write (iofile,1736) >*/
  1665.     io__54.ciunit = status_1.iofile;
  1666.     s_wsfe(&io__54);
  1667.     e_wsfe();
  1668. /*<  1736 format('0warning:  fourier analysis fundamental frequency is incom >*/
  1669. /*<      1patible with'/11x,'transient analysis print interval ... fourier a >*/
  1670. /*<      2nalysis omitted'/) >*/
  1671. /*<  1740 if (jacflg.eq.0) go to 1800 >*/
  1672. L1740:
  1673.     if (ac_1.jacflg == 0) {
  1674.     goto L1800;
  1675.     }
  1676. /*<       if (jacflg.le.limpts) go to 1750 >*/
  1677.     if (ac_1.jacflg <= flags_1.limpts) {
  1678.     goto L1750;
  1679.     }
  1680. /*<       jacflg=0 >*/
  1681.     ac_1.jacflg = 0;
  1682. /*<       write (iofile,1701) limpts,alsac >*/
  1683.     io__55.ciunit = status_1.iofile;
  1684.     s_wsfe(&io__55);
  1685.     do_fio(&c__1, (char *)&flags_1.limpts, (ftnlen)sizeof(integer));
  1686.     do_fio(&c__1, (char *)&alsac, (ftnlen)sizeof(doublereal));
  1687.     e_wsfe();
  1688. /*<       go to 1800 >*/
  1689.     goto L1800;
  1690. /*<  1750 if ((jelcnt(33)+jelcnt(34)+jelcnt(35)+jelcnt(38)+jelcnt(39) >*/
  1691. /*<      1   +jelcnt(40)+idist+inoise).gt.0) go to 1800 >*/
  1692. L1750:
  1693.     if (cirdat_1.jelcnt[32] + cirdat_1.jelcnt[33] + cirdat_1.jelcnt[34] + 
  1694.         cirdat_1.jelcnt[37] + cirdat_1.jelcnt[38] + cirdat_1.jelcnt[39] + 
  1695.         ac_1.idist + ac_1.inoise > 0) {
  1696.     goto L1800;
  1697.     }
  1698. /*<       if(ipostp.ne.0) go to 1800 >*/
  1699.     if (status_1.ipostp != 0) {
  1700.     goto L1800;
  1701.     }
  1702. /*<       jacflg=0 >*/
  1703.     ac_1.jacflg = 0;
  1704. /*<       write (iofile,1711) alsac >*/
  1705.     io__56.ciunit = status_1.iofile;
  1706.     s_wsfe(&io__56);
  1707.     do_fio(&c__1, (char *)&alsac, (ftnlen)sizeof(doublereal));
  1708.     e_wsfe();
  1709.  
  1710. /*  sequence through the output lists */
  1711.  
  1712. /*<  1800 do 1820 id=41,45 >*/
  1713. L1800:
  1714.     for (id = 41; id <= 45; ++id) {
  1715. /*<       if (id.le.43) numout=1 >*/
  1716.     if (id <= 43) {
  1717.         outinf_1.numout = 1;
  1718.     }
  1719. /*<       loc=locate(id) >*/
  1720.     loc = cirdat_1.locate[id - 1];
  1721. /*<  1810 if (loc.eq.0) go to 1820 >*/
  1722. L1810:
  1723.     if (loc == 0) {
  1724.         goto L1820;
  1725.     }
  1726. /*<       numout=numout+1 >*/
  1727.     ++outinf_1.numout;
  1728. /*<       nodplc(loc+4)=numout >*/
  1729.     nodplc[loc + 3] = outinf_1.numout;
  1730. /*<       loc=nodplc(loc) >*/
  1731.     loc = nodplc[loc - 1];
  1732. /*<       go to 1810 >*/
  1733.     goto L1810;
  1734. /*<  1820 continue >*/
  1735. L1820:
  1736.     ;}
  1737.  
  1738. /*   increase number of .prints if too many outputs for output line-width 
  1739. */
  1740.  
  1741. /*<       ifwdth=max0(numdgt-1,0)+9 >*/
  1742. /* Computing MAX */
  1743.     i_1 = outinf_1.numdgt - 1;
  1744.     ifwdth = max(0,i_1) + 9;
  1745. /*<       noprln=min0(8,(lwidth-12)/ifwdth) >*/
  1746. /* Computing MAX */
  1747.     i_1 = 8, i_2 = (miscel_1.lwidth - 12) / ifwdth;
  1748.     noprln = min(i_2,i_1);
  1749. /*<       do 1860 id=31,35 >*/
  1750.     for (id = 31; id <= 35; ++id) {
  1751. /*<       loc=locate(id) >*/
  1752.     loc = cirdat_1.locate[id - 1];
  1753. /*<  1830 if(loc.eq.0) go to 1860 >*/
  1754. L1830:
  1755.     if (loc == 0) {
  1756.         goto L1860;
  1757.     }
  1758. /*<       noprex=nodplc(loc+3)-noprln >*/
  1759.     noprex = nodplc[loc + 2] - noprln;
  1760. /*<       if(noprex.le.0) go to 1850 >*/
  1761.     if (noprex <= 0) {
  1762.         goto L1850;
  1763.     }
  1764. /*<       nodplc(loc+3)=noprln >*/
  1765.     nodplc[loc + 2] = noprln;
  1766. /*<       call find(dble(jelcnt(id)),id,locnew,1) >*/
  1767.     d_1 = (doublereal) cirdat_1.jelcnt[id - 1];
  1768.     find_(&d_1, &id, &locnew, &c__1);
  1769. /*<       nodplc(locnew+2)=nodplc(loc+2) >*/
  1770.     nodplc[locnew + 1] = nodplc[loc + 1];
  1771. /*<       nodplc(locnew+3)=noprex >*/
  1772.     nodplc[locnew + 2] = noprex;
  1773. /*<       call copy4(nodplc(loc+2*noprln+4),nodplc(locnew+4),2*noprex) >*/
  1774.     i_1 = noprex << 1;
  1775.     copy4_(&nodplc[loc + (noprln << 1) + 3], &nodplc[locnew + 3], &i_1);
  1776. /*<  1850 loc=nodplc(loc) >*/
  1777. L1850:
  1778.     loc = nodplc[loc - 1];
  1779. /*<       go to 1830 >*/
  1780.     goto L1830;
  1781. /*<  1860 continue >*/
  1782. L1860:
  1783.     ;}
  1784.  
  1785. /*  exit */
  1786.  
  1787. /*<  2000 call second(t2) >*/
  1788. L2000:
  1789.     second_(&t2);
  1790. /*<       rstats(1)=rstats(1)+t2-t1 >*/
  1791.     miscel_1.rstats[0] = miscel_1.rstats[0] + t2 - t1;
  1792. /*<       return >*/
  1793.     return 0;
  1794. /*<       end >*/
  1795. } /* errchk_ */
  1796.  
  1797. #undef cvalue
  1798. #undef nodplc
  1799. #undef aoutpt
  1800. #undef amodel
  1801. #undef aelmt
  1802. #undef ndefin
  1803. #undef titlop
  1804. #undef aname
  1805. #undef alsac
  1806. #undef alstr
  1807. #undef alsdc
  1808.  
  1809.  
  1810.